function Cat(name, color) { //类
    //this指向new后的实例 即 this会指向对象
    this.name = name;
    this.color = color


    // 构造函数一般不放方法
    // this.sayHello = function(){
    //     console.log("Meo~Meo~Meo")
    // }
}

// 解决了围城问题 （比喻）
// js原型机制 
// constructor+prototype = JS面向对象
// JS基于原型式的面向对象。没有血缘关系
// 构造函数如同火车头，原型对象如同车厢，有很多节
o = {
    sayHello : function () {
        console.log("Meo~Meo~Meo~")
    }
}
Cat.prototype = o
// 函数实例化时，执行的为constructor

let cat1 = new Cat('阿花', '花色')
cat1.sayHello()

console.log(Cat.prototype.isPrototypeOf(cat1));
console.log(cat1.__proto__.hasOwnProperty('sayHello'));